package com.vcredit.creditcat.api;

import java.util.List;

import com.vcredit.creditcat.dto.mobile.MobileProcessInDto;
import com.vcredit.creditcat.dto.mobile.MobileProcessOutDto;
import com.vcredit.creditcat.dto.mobile.MobileProcessStatus;
import com.vcredit.creditcat.model.AuthMobile;
import com.vcredit.creditcat.model.CallLog;
import com.vcredit.creditcat.model.Cust;

public interface IMobileProcessManager {
	/**
	 * 手机账单爬取初始化
	 * 
	 * @return
	 * @throws Exception
	 */
	MobileProcessOutDto mobileInit(MobileProcessInDto mobileProcessInDto, Cust cust) throws Exception;

	/**
	 * 手机账单爬取登陆
	 * 
	 * @return
	 * @throws Exception
	 */
	MobileProcessOutDto mobileLogin(MobileProcessInDto param, Cust cust) throws Exception;

	/**
	 * 手机账单爬取获取短信验证码
	 * 
	 * @return
	 * @throws Exception
	 */
	MobileProcessOutDto mobileSendSms(MobileProcessInDto param, Cust cust) throws Exception;

	/**
	 * 手机账单爬取证验短信验证码
	 * 
	 * @return
	 * @throws Exception
	 */
	MobileProcessOutDto mobileCheckSms(MobileProcessInDto param, Cust cust) throws Exception;

	/**
	 * 采集
	 * 
	 * @param authMobile
	 * @throws Exception
	 */
	void updateCrawlerState(AuthMobile authMobile) throws Exception;

	/**
	 * 获取手机状态
	 * 
	 * @return
	 * @throws Exception
	 */
	MobileProcessStatus getStatus(Cust cust) throws Exception;

	/**
	 * 爬取未采集的
	 * 
	 * @return
	 */
	List<AuthMobile> findUnCrawl();

	/**
	 * 获取运营商
	 * 
	 * @param mobileProcessInDto
	 * @param cust
	 * @return
	 * @throws Exception
	 */
	MobileProcessOutDto getWebSite(MobileProcessInDto mobileProcessInDto, Cust cust) throws Exception;

	/**
	 * 通话记录保存（前端采集）
	 * 
	 * @param param
	 * @param cust
	 * @return
	 * @throws Exception
	 */
	void saveCallRecord(List<CallLog> param) throws Exception;

	List<CallLog> findAllCallRecord( CallLog param) throws Exception;
}
